
#ifndef					__GARBAGECOLLECTOR_H_
# define				__GARBAGECOLLECTOR_H_

# include				<queue>

template<class T>
class					GarbageCollector
{
public:
	bool				empty() const;
	void				pop();
	void				push(T *);
	T					*back();
private:
	std::queue<T *>		_list;
};

template<class T>
bool					GarbageCollector<T>::empty() const
{
	return _list.empty();
}

template<class T>
void					GarbageCollector<T>::pop()
{
	_list.pop();
}

template<class T>
void					GarbageCollector<T>::push(T *obj)
{
	_list.push(obj);
}

template<class T>
T						*GarbageCollector<T>::back()
{
	return _list.back();
}

#endif // !__GARBAGECOLLECTOR_H_
